package infb.modelo;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;


@Entity
@Table(name = "MEDICAMENTOS")
@NamedQueries({@NamedQuery(name = "Medicamentos.findAll", query = "SELECT m FROM Medicamentos m"), @NamedQuery(name = "Medicamentos.findById", query = "SELECT m FROM Medicamentos m WHERE m.id = :id"), @NamedQuery(name = "Medicamentos.findByNombre", query = "SELECT m FROM Medicamentos m WHERE m.nombre = :nombre"), @NamedQuery(name = "Medicamentos.findByDefinicion", query = "SELECT m FROM Medicamentos m WHERE m.definicion = :definicion"), @NamedQuery(name = "Medicamentos.findByComposicion", query = "SELECT m FROM Medicamentos m WHERE m.composicion = :composicion"), @NamedQuery(name = "Medicamentos.findByPosologia", query = "SELECT m FROM Medicamentos m WHERE m.posologia = :posologia"), @NamedQuery(name = "Medicamentos.findByInteracciones", query = "SELECT m FROM Medicamentos m WHERE m.interacciones = :interacciones"), @NamedQuery(name = "Medicamentos.findByEfectosSecundarios", query = "SELECT m FROM Medicamentos m WHERE m.efectosSecundarios = :efectosSecundarios"), @NamedQuery(name = "Medicamentos.findByObservaciones", query = "SELECT m FROM Medicamentos m WHERE m.observaciones = :observaciones")})
@SequenceGenerator(name="secuencia_medicamentos",sequenceName="SECUENCIA_MEDICAMENTOS",allocationSize=1)
public class Medicamentos implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="secuencia_medicamentos")
    private Long id;
    @Basic(optional = false)
    @Column(name = "NOMBRE")
    private String nombre;
    @Column(name = "DEFINICION")
    private String definicion;
    @Column(name = "COMPOSICION")
    private String composicion;
    @Column(name = "POSOLOGIA")
    private String posologia;
    @Column(name = "INTERACCIONES")
    private String interacciones;
    @Column(name = "EFECTOS_SECUNDARIOS")
    private String efectosSecundarios;
    @Column(name = "OBSERVACIONES")
    private String observaciones;

    @JoinColumn(name = "CATEGORIA", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private CategoriasMedicamentos categoria;

    public Medicamentos() {
    }

    public Medicamentos(Long id) {
        this.id = id;
    }

    public Medicamentos(Long id, String nombre) {
        this.id = id;
        this.nombre = nombre;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDefinicion() {
        return definicion;
    }

    public void setDefinicion(String definicion) {
        this.definicion = definicion;
    }

    public String getComposicion() {
        return composicion;
    }

    public void setComposicion(String composicion) {
        this.composicion = composicion;
    }

    public String getPosologia() {
        return posologia;
    }

    public void setPosologia(String posologia) {
        this.posologia = posologia;
    }

    public String getInteracciones() {
        return interacciones;
    }

    public void setInteracciones(String interacciones) {
        this.interacciones = interacciones;
    }

    public String getEfectosSecundarios() {
        return efectosSecundarios;
    }

    public void setEfectosSecundarios(String efectosSecundarios) {
        this.efectosSecundarios = efectosSecundarios;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public CategoriasMedicamentos getCategoria() {
        return categoria;
    }

    public void setCategoria(CategoriasMedicamentos categoria) {
        this.categoria = categoria;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Medicamentos)) {
            return false;
        }
        Medicamentos other = (Medicamentos) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "infb.modelo.Medicamentos[id=" + id + "]";
    }

}
